package com.beerandjesus.sportofkings.handicapper.app;

import com.beerandjesus.sportofkings.handicapper.model.RaceAnalysisResultVO;
import com.beerandjesus.sportofkings.handicapper.model.CardVO;
import com.beerandjesus.sportofkings.handicapper.model.brisnet.singlefile.HorseRace;

import java.util.List;

/**
 * Interface for analyzing a single race card.
 *
 * Date: May 25, 2012
 * Time: 5:25:29 PM
 */
public interface CardAnalyzer {

    /**
     * Analyze a given card.
     * @param card An object in one way or another containing all data for
     *             a full race card.
     * @return A RaceAnalysisResultVO for each race on the card.
     * @throws CardAnalyzerException
     */
    public abstract List<RaceAnalysisResultVO> analyzeCard(CardVO card) throws CardAnalyzerException;

    /**
     * Parse a given card into a list of HorseRace objects.
     * @param card An object containing all data for a full race card.
     * @return The card broken down into a list of individual horse races.
     * @throws CardAnalyzerException
     */
    public abstract List<HorseRace> parseCard(CardVO card) throws CardAnalyzerException;
    
}
